from django.db import models
from datetime import date

class Hospede(models.Model):

	#Atributos
	nome = models.CharField(max_length = 45)
		#nome
	cpf = models.CharField(max_length = 11)
		#cpf
	telefone = models.CharField(max_length = 20)
		#telefone - (ss)ssss-ssss
	endereco = models.CharField(max_length = 180)
		#endereco - EE, ccccccc, bbbbb, rrrrrr, num
	passaporte = models.CharField(max_length = 20, null=True, blank=True)
	#Metodo para retorno de string do objeto
	def __unicode__(self):
		return "Nome : "+self.nome+" CPF: "+self.cpf+" Telefone: "+self.telefone+" Endereco: "+self.endereco+" Passaporte: "+self.passaporte
class TipoApartamento(models.Model):
	
	#Atributos
	descricao = models.TextField()

	#Metodo para retorno de string do objeto
	def __unicode__(self):
		return "Descricao : "+self.descricao+" "

class Apartamento(models.Model):
	
	#Atributos
	tamanho = models.IntegerField()
	#idHospede = models.ForeignKey(Hospede, null=True, blank=True)
	idTipo = models.ForeignKey(TipoApartamento)

	#Metodo para retorno de string do objeto
	def __unicode__(self):
		return "Tipo de apartamento: "+self.idTipo.descricao+" Tamanho do apartamento: "+str(self.tamanho)

class Reserva(models.Model):

	#Atributos
	entradaPrevista = models.DateField()
	saidaPrevista = models.DateField()
	idApartamento = models.ForeignKey(Apartamento)
	idHospede = models.ForeignKey(Hospede)

	#Metodo para retorno de string do objeto
	def __unicode__(self):
		return "Entrada Prevista: "+str(self.entradaPrevista)+" Saida prevista: "+str(self.saidaPrevista)+" Apartamento: "+str(self.idApartamento.id)+" Hospede: "+str(self.idHospede.nome)
	
class TipoServico(models.Model):
	
	#Atributos
	descricao = models.TextField()

	#Metodo para retorno de string do objeto
	def __unicode__(self):
		return "Descricao : "+self.descricao+" "


class Servico(models.Model):
	
	#Atributos
	preco = models.DecimalField(max_digits=7, decimal_places=2)
	idTipoServico = models.ForeignKey(TipoServico)
	idTipoApartamento = models.ForeignKey(TipoApartamento)

	#Metodo para retorno de string do objeto
	def __unicode__(self):
		return "Tipo de servico: "+self.idTipoServico.descricao+" Tipo de Apartamento: "+self.idTipoApartamento.descricao+" Preco: "+str(self.preco)

class HistoricoOcupacao(models.Model):

	class Meta: 
		verbose_name_plural = 'Check-in'
		verbose_name = 'Check-in'

	#Atributos
	dataInicio = models.DateField()
	dataFim = models.DateField()
	idApartamento = models.ForeignKey(Apartamento)
	idHospede = models.ForeignKey(Hospede)

	#Metodo para retorno de string do objeto
	def __unicode__(self):
		return "Data de Inicio: "+str(self.dataInicio)+" Data de Saida: "+str(self.dataFim)+" Apartamento: "+str(self.idApartamento.id)+" Hospede: "+str(self.idHospede.nome)

class HistoricoServico(models.Model):
	class Meta: 
		verbose_name_plural = 'Despesas'
		verbose_name = 'Despesa'
	#Atributos
	data = models.DateField()
	quantidade = models.IntegerField()
	idHistoricoOcupacao = models.ForeignKey(HistoricoOcupacao)
	idServico = models.ForeignKey(Servico)

	#Metodo para retorno de string do objeto
	def __unicode__(self):
		return "Servico: "+self.idServico.descricao+" Hospede: "+self.idHistoricoOcupacao.idHospede.nome+" Quantidade: "+self.quantidade+" Data: "+str(self.data)
